package com.gome.TestUtil.array;

import java.util.Arrays;
import java.lang.reflect.Array;

public class ArrayDemo3 {

    // if input is a single-dimension primitive array,
    // return a new array consisting of wrapped elements,
    // else just return input argument

    public static Object toArray(Object vec) {

        // if null, return

        if (vec == null) {
            return vec;
        }

        // if not an array or elements not primitive, return

        Class cls = vec.getClass();
        if (!cls.isArray()) {
            return vec;
        }
        if (!cls.getComponentType().isPrimitive()) {
            return vec;
        }

        // get array length and create Object output array

        int length = Array.getLength(vec);
        Object newvec[] = new Object[length];

        // wrap and copy elements

        for (int i = 0; i < length; i++) {
            newvec[i] = Array.get(vec, i);
        }

        return newvec;
    }

    public static void main(String args[]) {

        // create a primitive array

        int vec[] = new int[]{1, 2, 3};

        // wrap it

        Object wrappedvec[] = (Object[])toArray(vec);

        // display result

        for (int i = 0; i < wrappedvec.length; i++) {
            System.out.println(wrappedvec[i]);
        }
    }
}
